#ifndef DBSETTING_H
#define DBSETTING_H

#pragma once

#include <QString>
#include <QMap>

namespace ns_yht
{

    /**
     * @brief 数据库配置表（TSetting）中id对应属性
     *
     */
#if 0
#define SETTING_EMapDisplayCat 1        // 电子海图显示模式(基本、标准、全部)
#define SETTING_EMapGrid 2              // 电子海图是否显示经纬度网格
#define SETTING_RadarEchoPort 21        // 雷达回波端口
#define SETTING_DraggingRadius 25       // 走锚距离(米)
#define SETTING_MARINEOPTIONS 30        // 海图设置选项，浅水等深线 | 安全等深线 | 深水等深线 | 安全水深 | 字体缩放
#define SETTING_RadarType 35            // 雷达类型
#define SETTING_RadarEchoColor 36       // 雷达回波颜色
#define SETTING_UpMode 46               // 向上模式 0-真北；1-船首
#define SETTING_RedVolumn 47            // 警报音量，30-100
#define SETTING_OrangeVolumn 48         // 警告音量，30-100
#define SETTING_YellowVolumn 49         // 警示音量，30-100
// #define SETTING_Brightness 48           // 亮度，0-100
#define SETTING_MMSI 60                 // 本船MMSI
#define SETTING_LastState 68            // 本船之前状态 0-锚泊,  1-航行;0-mibt中重新定义：00-无状态；01-导航未锚泊；10-锚泊未导航；11-导航+锚泊;实际导航状态还要看是否激活航线并且航线有效
// #define SETTING_LastPos 69              // 本船最后位置 【lat,lon ,分隔】
#define SETTING_AnchorPos 70            // 本船锚泊位置 【lat,lon ,分隔】
#define SETTING_ActivedRouteId 94       // 本船激活的航线,0-无,-1:指定点导航，>0:航线id
#define SETTING_ActivedWaypointIndex 95 // 本船激活的航路点索引,在指定点导航时是指定点导航的位置和名称
#define SETTING_LastAlarm 97            // 本船最后报警状态 0-无，1-落水
#define SETTING_FallPos 98              // 落水位置  【lat,lon ,分隔】
#define SETTING_AnchorIndex 99          // 当前或最近使用的锚，0-左锚，1-右锚
#define SETTING_SerialPorts 101         // 打开的串口和波特率
#define SETTING_NetworkPorts 102        // 打开的网络端口
#define SETTING_LayerVisibility 110     // 可见图层，用 | 连接的 GraphLayerType
#define SETTING_ShipRadius 111          // 显示本船周围船舶的半径范围，海里
#define SETTING_Password 112            // mibt密码
#endif

#define SETTING_APPVERSION 10000    // 软件版本
#define SETTING_INIVERSION 10001    // 配置文件版本
#define SETTING_MACHINECODE 10002   // 机器码
#define SETTING_LASTSTARTTIME 10003 // 最后启动时间
#define SETTING_REBOOTTIMES 10004   // 重启次数

    class DbSetting
    {
    public:
        DbSetting();
        ~DbSetting();

        QString getSetting(int id);
        bool saveSetting(int id, const QString &svalue);
        bool getSettings(QMap<int, QString> &valueList);
        bool getSettings(QMap<int, QString> &valueList, QVector<int> ids);

    private:
        bool checkTSetting();
        bool tableOk = false;
    };

}
#endif